package com.yootk.di.service;

import com.yootk.di.config.MessageConfig;
import com.yootk.di.type.MessageSendStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MessageService implements AutoCloseable { // 消息的服务处理
    private static final Logger LOGGER = LoggerFactory.getLogger(MessageService.class);
    private MessageConfig messageConfig; // 这个类的执行需要config属性支持
    private boolean connect() { // 定义一个连接方法
        LOGGER.info("连接服务器：{}:{}", this.messageConfig.getHost(), this.messageConfig.getPort());
        return this.messageConfig.isEnable(); // 通过enable的状态来决定是否连接成功
    }
    public MessageSendStatus send(String msg) { // 消息发送
        if (this.connect()) {   // 消息发送之前需要首先连接服务器
            LOGGER.info("【消息发送】{}", msg); // 日志记录
            try {
                this.close(); // 关闭通道
            } catch (Exception e) {
                LOGGER.error("消息发送产生异常：{}", e.getMessage());
            }
            return MessageSendStatus.SUCCESS; // 返回成功的状态
        }
        LOGGER.error("无法创建消息发送通道，消息发送失败。");
        return MessageSendStatus.FAILURE; // 返回失败的状态
    }
    // 此时该Bean（注册完成的类对象），之中的config属性需要通过配置文件定义注入管理
    public void setMessageConfig(MessageConfig messageConfig) { // 外部注入config实例
        LOGGER.debug("【设置MessageConfig依赖关联】public void setMessageConfig(MessageConfig config) {}");
        this.messageConfig = messageConfig;
    }
    @Override
    public void close() throws Exception {
        LOGGER.info("消息发送完毕，断开消息发送通道.");
    }
}
